Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Fwd: Re: DATABASE COMPARE SCRIPT

Fwd: Re: DATABASE COMPARE SCRIPT

From: Jared Still <jkstill_at_cybcon.com>
Date: Sun, 13 May 2001 22:20:00 -0700
Message-ID: <F001.00302432.20010513214045@fatcity.com>


--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

The database compare script didn't come out to well the first time, so I've just embedded them in this post.

The scripts are:

clears.sql
columns.sql
title.sql
schema_diff.sql

Jared

rem TITLE.SQL   -     This SQL*Plus script builds a standard report
rem                   heading for database reports that are XX columns
rem
column  TODAY           NEW_VALUE       CURRENT_DATE            NOPRINT
column  TIME            NEW_VALUE       CURRENT_TIME            NOPRINT
column  DATABASE        NEW_VALUE       DATA_BASE               NOPRINT
set term off feed off
rem
define COMPANY = "BCBSO"
define HEADING = "&1"
col cPageNumLoc new_value PageNumLoc noprint select ('&&2' - 10 ) cPageNumLoc from dual; rem
TTITLE LEFT "Date: " current_date CENTER company col &&PageNumLoc "Page:" format 999 -
       SQL.PNO SKIP 1 LEFT "Time: " current_time CENTER heading RIGHT -
       format a15 SQL.USER SKIP 1 CENTER format a20 data_base SKIP 2
rem
rem
set heading off
set pagesize 0
rem
column passout new_value dbname noprint
SELECT TO_CHAR(SYSDATE,'MM/DD/YY') TODAY,
       TO_CHAR(SYSDATE,'HH:MI AM') TIME,
       --DATABASE||' Database' DATABASE,
       --rtrim(database) passout
       name||' Database' DATABASE,
       lower(rtrim(name)) passout

FROM v$database;
set term on feed on
rem
set heading on
set pagesize 58
set line &&2
set newpage 0
define db = '_&dbname'
undef 1 2

col blocks format 99,999,999 head 'BLOCKS'

col db_link format a30 head 'DB LINK'
col db_link_instance format a30 head 'DB LINK|INSTANCE'
col db_link_username format a10 head 'DB LINK|USERNAME'
col empty_blocks format 99,999,999 head 'EMPTY BLOCKS' col host format a10 head 'HOST'
col index_name format a30 head 'INDEX NAME' col initial_extent format 9,999,999,999 head 'INITIAL|EXTENT' col instance format a4 head 'INST'
col max_blocks format 9,999,999 head 'MAX BLOCKS'
col max_bytes format 99,999,999,999 head 'MAX BYTES'
col max_extents format 999,999 head 'MAX|EXTENTS'
col min_extents format 999 head 'MIN|EXT'
col next_extent format 9,999,999,999 head 'NEXT|EXTENT' col object_name format a30 head 'OBJECT NAME' col owner format a10 head 'OWNER'
col pct_free format 999 head 'PCT|FREE'
col pct_increase format 999 head 'PCT|INC'
col pct_used format 999 head 'PCT|USED'

col synonym_name format a30 head 'SYNONYM NAME' col table_name format a30 head 'TABLE NAME' col table_owner format a10 head 'TABLE|OWNER' col tablespace_name format a15 head 'TABLESPACE|NAME' col timestamp format a19 head 'TIME STAMP' col username format a10 head 'USERNAME'
col last_ddl_time head 'LAST DDL|TIME'
col created head 'CREATED'
col procedure_name format a30 head 'PROCEDURE NAME' col function_name format a30 head 'FUNCTION NAME'
col package_name format a30 head 'PACKAGE NAME'
col package_body_name format a30 head 'PACKAGE BODY NAME'
col segment_name format a30 head 'SEGMENT NAME'


----------------------

clear col
clear break
clear computes

btitle ''
ttitle ''

btitle off
ttitle off


@clears
@columns

col cuser_1 noprint new_value uuser_1
col cuser_2 noprint new_value uuser_2
col cinstance_1 noprint new_value uinstance_1 col cinstance_2 noprint new_value uinstance_2

prompt
prompt
prompt schema_diff will report differences in tables prompt between any 2 users on any 2 databases prompt

set term on feed on
prompt User 1:
set term off feed off
select upper('&1') cuser_1 from dual;

set term on feed on
prompt instance 1:
set term off feed off
select upper('&2') cinstance_1 from dual;

set term on feed on
prompt User 2:
set term off feed off
select upper('&3') cuser_2 from dual;

set term on feed on
prompt instance 2:
set term off feed off
select upper('&4') cinstance_2 from dual;

set term on feed on

drop table table_diff;

create table table_diff as
select table_name, column_name, data_type, data_length, data_precision, data_scale
from all_tab_columns@&&uinstance_1
where 1=2
/

alter table table_diff add( instance varchar2(8) );

create index table_diff_idx on table_diff ( table_name, column_name, instance );

insert into table_diff ( table_name, column_name, data_type, data_length, data_precision, data_scale )

        select table_name, column_name, data_type, data_length, data_precision, data_scale

        from all_tab_columns@&&uinstance_1
        where owner = '&&uuser_1'
        minus
        select table_name, column_name, data_type, data_length, data_precision, 
data_scale
        from all_tab_columns@&&uinstance_2
        where owner = '&&uuser_2'

/

update table_diff set instance = '&&uinstance_1';

insert into table_diff ( table_name, column_name, data_type, data_length, data_precision, data_scale )

        select table_name, column_name, data_type, data_length, data_precision, data_scale

        from all_tab_columns@&&uinstance_2
        where owner = '&&uuser_2'
        minus
        select table_name, column_name, data_type, data_length, data_precision, 
data_scale
        from all_tab_columns@&&uinstance_1
        where owner = '&&uuser_1'

/

update table_diff set instance = '&&uinstance_2' where instance is null;

commit;

drop table index_diff;

create table index_diff as
select index_name, table_name, column_name, column_position, column_length from all_ind_columns@&&uinstance_1
where 1=2
/

alter table index_diff add( instance varchar2(8) );

create index index_diff_idx on index_diff (

        table_name, 
        column_name, column_position, column_length
)
/

insert into index_diff ( index_name, table_name, column_name, column_position, column_length )

        select index_name,  table_name, column_name, column_position, column_length
        from all_ind_columns@&&uinstance_1
        where index_owner = '&&uuser_1'
        minus
        select index_name, table_name, column_name, column_position, column_length
        from all_ind_columns@&&uinstance_2
        where index_owner = '&&uuser_2'

/

update index_diff set instance = '&&uinstance_1';

insert into index_diff ( index_name, table_name, column_name, column_position, column_length )

        select index_name, table_name, column_name, column_position, column_length
        from all_ind_columns@&&uinstance_2
        where index_owner = '&&uuser_2'
        minus
        select index_name, table_name, column_name, column_position, column_length
        from all_ind_columns@&&uinstance_1
        where index_owner = '&&uuser_1'

/

update index_diff set instance = '&&uinstance_2' where instance is null;

commit;

drop table arg_diff;

create table arg_diff as
SELECT

        obj# obj#
        ,procedure$ procedure
        ,argument argument
        ,type type

   ,overload# overload
   ,position position

        ,sequence# sequence

   ,default# "DEFAULT"
   ,in_out in_out
   ,level# "LEVEL"
        ,length length
   ,precision "PRECISION"

   ,scale scale
   ,radix radix
FROM sys.ARGUMENT$@&uinstance_1
where 1 = 2
/

alter table arg_diff add( instance varchar2(8), object_name varchar2(30), object_type varchar2(13) );
alter table arg_diff modify( obj# null );

create index arg_diff_idx on arg_diff ( obj#, argument, type );

insert into arg_diff

        (
                 object_name, object_type, procedure, argument, type, overload, 
position,
sequence,
                "DEFAULT", in_out, "LEVEL", length, "PRECISION", scale, radix
        )
        select 
                obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument
                ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# 
,arg.in_out
        ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix
        from sys.argument$@&&uinstance_1 arg, dba_objects@&&uinstance_1 obj
        where arg.obj# = obj.object_id
        and obj.owner = '&&uuser_1'
        minus
        select 
                obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument
                ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# 
,arg.in_out
        ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix
        from sys.argument$@&&uinstance_2 arg, dba_objects@&&uinstance_2 obj
        where arg.obj# = obj.object_id
        and obj.owner = '&&uuser_2'

/

update arg_diff
set instance = '&&uinstance_1'
/

drop table remote_dba_objects;
drop table remote_arguments;

create table remote_dba_objects
as
select *
from dba_objects@&&uinstance_1
/

create index remote_dba_object_idx1
on remote_dba_objects( object_type, object_id ) /

create index remote_dba_object_idx2
on remote_dba_objects( object_id )
/

create table remote_arguments
as
select

        obj#, procedure$,overload#,position,sequence#,level#,
        argument,type,default#,in_out,length,precision,scale,
        radix,deflength

from sys.argument$@&&uinstance_1
/

create index remote_arguments_idx1
on remote_arguments( argument, type )
/

update arg_diff diff
set obj# = (

        select obj# 
        from remote_arguments arg, remote_dba_objects obj
        where arg.obj# = obj.object_id
        and obj.object_name = diff.object_name
        and obj.object_type = diff.object_type
        and obj.owner = '&&uuser_1'
        and nvl(arg.procedure$, 'NONE') = nvl(diff.procedure, 'NONE')
        and arg.argument = diff.argument
        and arg.type = diff.type
        and arg.overload# = diff.overload
        and diff.instance = '&&uinstance_1'
)
where instance = '&&uinstance_1'
/  

insert into arg_diff

        (
                object_name, object_type, procedure, argument, type, overload, 
position,
sequence,
                "DEFAULT", in_out, "LEVEL", length, "PRECISION", scale, radix
        )
        select 
                obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument
                ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# 
,arg.in_out
        ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix
        from sys.argument$@&&uinstance_2 arg, dba_objects@&&uinstance_2 obj
        where arg.obj# = obj.object_id
        and obj.owner = '&&uuser_2'
        minus
        select 
                obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument
                ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# 
,arg.in_out
        ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix
        from sys.argument$@&&uinstance_1 arg, dba_objects@&&uinstance_1 obj
        where arg.obj# = obj.object_id
        and obj.owner = '&&uuser_1'

/

update arg_diff
set instance = '&&uinstance_2'
where instance is null
/

drop table remote_dba_objects;
drop table remote_arguments;

create table remote_dba_objects
as
select *
from dba_objects@&&uinstance_2
/

create index remote_dba_object_idx1
on remote_dba_objects( object_type, object_id ) /

create index remote_dba_object_idx2
on remote_dba_objects( object_id )
/

create table remote_arguments
as
select

        obj#, procedure$,overload#,position,sequence#,level#,
        argument,type,default#,in_out,length,precision,scale,
        radix,deflength

from sys.argument$@&&uinstance_2
/

create index remote_arguments_idx1
on remote_arguments( argument, type )
/

update arg_diff diff
set obj# = (

        select obj# 
        from remote_arguments arg, remote_dba_objects obj
        where arg.obj# = obj.object_id
        and obj.object_name = diff.object_name
        and obj.object_type = diff.object_type
        and obj.owner = '&&uuser_2'
        and nvl(arg.procedure$, 'NONE') = nvl(diff.procedure, 'NONE')
        and arg.argument = diff.argument
        and arg.type = diff.type
        and arg.overload# = diff.overload
        and diff.instance = '&&uinstance_2'
)
where instance = '&&uinstance_2'
/

drop table remote_dba_objects;
drop table remote_arguments;


break on table_name on column_name on username

col data_precision format 999999 head 'PREC'
col data_scale format 999999 head 'SCALE'
col data_length format 999999 head 'LENGTH'
col column_name format a30 head 'COLUMN NAME'

set trimspool on

spool table_diff.txt

@title 'Table Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 120

select

        t1.table_name, 
        t1.column_name, 
        '&&uuser_1' username,
        instance,
        t1.data_type, 
        t1.data_precision, 
        t1.data_scale,
        t1.data_length

from all_tab_columns@&&uinstance_1 t1, table_diff d1 where owner = '&&uuser_1'
and t1.table_name  = d1.table_name
and t1.column_name = d1.column_name
and d1.instance = '&&uinstance_1'

union all
select
        t2.table_name, 
        t2.column_name, 
        '&&uuser_2' username,
        instance,
        t2.data_type, 
        t2.data_length, 
        t2.data_scale,
        t2.data_precision

from all_tab_columns@&&uinstance_2 t2, table_diff d2 where owner = '&&uuser_2'
and t2.table_name  = d2.table_name
and t2.column_name = d2.column_name
and d2.instance = '&&uinstance_2'

order by 1,2,3,4
/

break on index_name on table_name

col data_precision format 999999 head 'PREC'
col data_scale format 999999 head 'SCALE'
col data_length format 999999 head 'LENGTH'
col column_name format a30 head 'COLUMN NAME'

col column_position format 999 head 'COL|POS' col column_length format 99999 head 'COL|LEN'

@title 'Index Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 135

col username format a10 head 'INDEX|OWNER'

spool index_diff.txt

select

        t1.index_name, 
        '&&uuser_1' username,
        instance,
        t1.table_name,
        t1.column_name,
        t1.column_position,
        t1.column_length

from all_ind_columns@&&uinstance_1 t1, index_diff d1 where index_owner = '&&uuser_1'
and t1.table_name  = d1.table_name
and t1.column_name = d1.column_name
and t1.column_position = d1.column_position
and t1.column_length = d1.column_length
and d1.instance = '&&uinstance_1'

union all
select
        t2.index_name, 
        '&&uuser_2' username,
        instance,
        t2.table_name,
        t2.column_name,
        t2.column_position,
        t2.column_length

from all_ind_columns@&&uinstance_2 t2, index_diff d2 where index_owner = '&&uuser_2'
and t2.table_name  = d2.table_name
and t2.column_name = d2.column_name
and t2.column_position = d2.column_position
and t2.column_length = d2.column_length
and d2.instance = '&&uinstance_2'

order by 1,2,3,4,5,6
/

col procedure format a40 head 'PROCEDURE'

break on procedure on overload

@title 'Argument Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 200

spool arg_diff.txt

SELECT

        substr(
                obj.OBJECT_NAME||
                decode( arg.procedure$,null,'','.') ||
                arg.procedure$,1,60
        ) procedure
   ,arg.OVERLOAD# overload
        ,arg.ARGUMENT
        ,diff.instance
        ,obj.object_type
        ,decode(arg.type,
                1, 'VARCHAR2',
                2, 'NUMBER',
                8, 'LONG',
                9, 'VARCHAR',
                12, 'DATE',
                23, 'RAW',
                24, 'LONG RAW',
                69, 'ROWID',
                96, 'CHAR',
                250, 'RECORD',
                252, 'BOOLEAN',
                -- just show type# as default
                substr(to_char(arg.type),1,10)
        ) type

   ,arg.POSITION
   ,NVL(arg.DEFAULT#,0) DEFAULT#

        ,decode(arg.IN_OUT,null,'IN', 2,'IN_OUT', 'UNKNOWN' ) IN_OUT    ,NVL(arg.LEVEL#,0) LEVEL#

        ,NVL(arg.LENGTH,0) LENGTH

   ,NVL(arg.PRECISION,0) PRECISION
   ,NVL(arg.SCALE,0) SCALE
   ,NVL(arg.RADIX,0) RADIX
from
        sys.argument$@&&uinstance_1 arg
        ,dba_objects@&&uinstance_1 obj
        ,arg_diff diff

where arg.obj# = obj.object_id
and obj.owner = '&&uuser_1'
and diff.obj# = arg.obj#
and nvl(diff.procedure,'NONE') = nvl(arg.procedure$,'NONE')
and diff.argument = arg.argument
and diff.type = arg.type
and diff.overload = arg.overload#
and diff.instance = '&&uinstance_1'

union all
SELECT
        substr(
                obj.OBJECT_NAME||
                decode( arg.procedure$,null,'','.') ||
                arg.procedure$,1,60
        ) procedure
   ,arg.OVERLOAD# overload
        ,arg.ARGUMENT
        ,diff.instance
        ,obj.object_type
        ,decode(arg.type,
                1, 'VARCHAR2',
                2, 'NUMBER',
                8, 'LONG',
                9, 'VARCHAR',
                12, 'DATE',
                23, 'RAW',
                24, 'LONG RAW',
                69, 'ROWID',
                96, 'CHAR',
                250, 'RECORD',
                252, 'BOOLEAN',
                -- just show type# as default
                substr(to_char(arg.type),1,10)
        ) type

   ,arg.POSITION
   ,NVL(arg.DEFAULT#,0) DEFAULT#

        ,decode(arg.IN_OUT,null,'IN', 2,'IN_OUT', 'UNKNOWN' ) IN_OUT    ,NVL(arg.LEVEL#,0) LEVEL#

        ,NVL(arg.LENGTH,0) LENGTH

   ,NVL(arg.PRECISION,0) PRECISION
   ,NVL(arg.SCALE,0) SCALE
   ,NVL(arg.RADIX,0) RADIX
from
        sys.argument$@&&uinstance_2 arg
        ,dba_objects@&&uinstance_2 obj
        ,arg_diff diff

where arg.obj# = obj.object_id
and obj.owner = '&&uuser_2'
and diff.obj# = arg.obj#
and nvl(diff.procedure,'NONE') = nvl(arg.procedure$,'NONE')
and diff.argument = arg.argument
and diff.type = arg.type
and diff.overload = arg.overload#
and diff.instance = '&&uinstance_2'

order by 1,2,3,4,5
/

@title 'Sequence Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 110

col sequence_name format a30 head 'SEQUENCE NAME' col last_number format 999999999999 head 'LAST|NUMBER' col min_value format 9999999999 head 'MIN|VALUE' col max_value format 999999999999 head 'MAX|VALUE' col increment_by format 999999 head 'INCREMENT'

col cache_size format 999999 head 'CACHE|SIZE'
col cycle_flag format a5 head 'CYCLE|FLAG'
col order_flag format a5 head 'ORDER|FLAG'

break on sequence_name skip 1

spool sequence_diff.txt

(

        ( 
                select
                        sequence_name, '&&uinstance_1' instance ,last_number, 
min_value,max_value,
                        increment_by,cycle_flag,order_flag,
                        cache_size
                from dba_sequences@&&uinstance_1
                where sequence_owner = '&&uuser_1' 
        )
        minus
        ( 
                select 
                        sequence_name, '&&uinstance_2' instance ,last_number, 
min_value,max_value,
                        increment_by,cycle_flag,order_flag,
                        cache_size
                from dba_sequences@&&uinstance_2
                where sequence_owner = '&&uuser_2' 
        )

)
union
(
        ( 
                select
                        sequence_name, '&&uinstance_2' instance ,last_number, 
min_value,max_value,
                        increment_by,cycle_flag,order_flag,
                        cache_size
                from dba_sequences@&&uinstance_2
                where sequence_owner = '&&uuser_2' 
        )
        minus
        ( 
                select 
                        sequence_name, '&&uinstance_1' instance ,last_number, 
min_value,max_value,
                        increment_by,cycle_flag,order_flag,
                        cache_size
                from dba_sequences@&&uinstance_1
                where sequence_owner = '&&uuser_1' 
        )

)
/

spool off

undef 1 2 3 4

prompt
prompt
prompt
prompt Your reports in the following files: prompt
prompt table_diff.txt
prompt index_diff.txt
prompt arg_diff.txt
prompt sequence_diff.txt
prompt

--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
  charset="iso-8859-1";
  name="title.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="title.sql"

Ci0tIHRpdGxlLnNxbCAtIGNvcGllZCBmcm9tIHRpdGxlODAuc3FsCi0tIHNwZWNpZnkgbGluZSB3 aWR0aCB3aGVuIGNhbGxpbmcKLS0gZWcgQHRpdGxlICdyZXBvcnQgaGVhZGluZycgOTAKCnJlbSBU SVRMRS5TUUwgICAtICAgICBUaGlzIFNRTCpQbHVzIHNjcmlwdCBidWlsZHMgYSBzdGFuZGFyZCBy ZXBvcnQgCnJlbSAgICAgICAgICAgICAgICAgICBoZWFkaW5nIGZvciBkYXRhYmFzZSByZXBvcnRz IHRoYXQgYXJlIFhYIGNvbHVtbnMKcmVtCmNvbHVtbiAgVE9EQVkJCU5FV19WQUxVRSAJQ1VSUkVO VF9EQVRFCQlOT1BSSU5UCmNvbHVtbiAgVElNRSAgICAgICAgICAgIE5FV19WQUxVRQlDVVJSRU5U X1RJTUUJCU5PUFJJTlQKY29sdW1uICBEQVRBQkFTRSAgICAgICAgTkVXX1ZBTFVFICAgICAgIERB VEFfQkFTRSAgICAgICAgICAgICAgIE5PUFJJTlQKc2V0IHRlcm0gb2ZmIGZlZWQgb2ZmCnJlbQpk ZWZpbmUgQ09NUEFOWSA9ICJCQ0JTTyIKZGVmaW5lIEhFQURJTkcgPSAiJjEiCmNvbCBjUGFnZU51 bUxvYyBuZXdfdmFsdWUgUGFnZU51bUxvYyBub3ByaW50CnNlbGVjdCAoJyYmMicgLSAxMCApIGNQ YWdlTnVtTG9jIGZyb20gZHVhbDsKcmVtClRUSVRMRSBMRUZUICJEYXRlOiAiIGN1cnJlbnRfZGF0 ZSBDRU5URVIgY29tcGFueSBjb2wgJiZQYWdlTnVtTG9jICJQYWdlOiIgZm9ybWF0IDk5OSAtCiAg ICAgICBTUUwuUE5PIFNLSVAgMSBMRUZUICJUaW1lOiAiIGN1cnJlbnRfdGltZSBDRU5URVIgaGVh ZGluZyBSSUdIVCAtCiAgICAgICBmb3JtYXQgYTE1IFNRTC5VU0VSIFNLSVAgMSBDRU5URVIgZm9y bWF0IGEyMCBkYXRhX2Jhc2UgU0tJUCAyCnJlbQpyZW0Kc2V0IGhlYWRpbmcgb2ZmCnNldCBwYWdl c2l6ZSAwCnJlbQpjb2x1bW4gcGFzc291dCBuZXdfdmFsdWUgZGJuYW1lIG5vcHJpbnQKU0VMRUNU IFRPX0NIQVIoU1lTREFURSwnTU0vREQvWVknKSBUT0RBWSwKICAgICAgIFRPX0NIQVIoU1lTREFU RSwnSEg6TUkgQU0nKSBUSU1FLAogICAgICAgLS1EQVRBQkFTRXx8JyBEYXRhYmFzZScgREFUQUJB U0UsCiAgICAgICAtLXJ0cmltKGRhdGFiYXNlKSBwYXNzb3V0CiAgICAgICBuYW1lfHwnIERhdGFi YXNlJyBEQVRBQkFTRSwKICAgICAgIGxvd2VyKHJ0cmltKG5hbWUpKSBwYXNzb3V0CkZST00gICB2 JGRhdGFiYXNlOwpzZXQgdGVybSBvbiBmZWVkIG9uCnJlbQpzZXQgaGVhZGluZyBvbgpzZXQgcGFn ZXNpemUgNTgKc2V0IGxpbmUgJiYyCnNldCBuZXdwYWdlIDAKZGVmaW5lIGRiID0gJ18mZGJuYW1l Jwp1bmRlZiAxIDIK

--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
  charset="iso-8859-1";
  name="schema_diff.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="schema_diff.sql"

Ci0tIHNjaGVtYV9kaWZmLnNxbAotLSBKYXJlZCBTdGlsbCAKLS0gamtzdGlsbEBiY2Jzby5jb20K LS0gamtzdGlsbEB0ZWxlcG9ydC5jb20KLS0KLS0KLS0gMDcvMTQvMTk5OSBqa3N0aWxsIC0gcmVt b3ZlZCB0YWJsZV9vd25lciBmcm9tIHRoZSBpbmRleF9kaWZmCi0tICAgICAgICAgICAgICAgICAg ICAgIHNlY3Rpb24gYXMgdGhpcyBtYWRlIGFsbCBpbmRleGVzIGFwcGVhcgotLSAgICAgICAgICAg ICAgICAgICAgICBpbiB0aGUgZGlmZmVyZW5jZSByZXBvcnQgaWYgdGhlIHNjaGVtYXMKLS0gICAg ICAgICAgICAgICAgICAgICAgaGFkIGRpZmZlcmVudCBuYW1lcwotLSAgICAgICAgICAgICAgICAg ICAgICAtCi0tIHRoaXMgc2NyaXB0IHdpbGwgY3JlYXRlIHJlcG9ydHMgb2YgdGhlCi0tIGRpZmZl cmVuY2VzIGJldHdlZW4gMiBzY2hlbWFzCi0tIHRoZSByZXBvcnRzIGNyZWF0ZWQgYXJlOgoKLS0g dGFibGVfZGlmZi50eHQKLS0gaW5kZXhfZGlmZi50eHQKLS0gYXJnX2RpZmYudHh0Ci0tIHNlcXVl bmNlX2RpZmYudHh0CgotLSBhbGwgZGlmZmVyZW5jZXMgYXJlIGNoZWNrZWQgYm90aAotLSB3YXlz IC0gc2NoZW1hMSBpcyBjb21wYXJlZCB0byBzY2hlbWEyCi0tIGFuZCB0aGVuIHNjaGVtYTIgaXMg Y29tcGFyZWQgdG8gc2NoZW1hMQotLSBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggZGF0YWJhc2Ug dGhlCi0tIHJlcG9ydHMgYXJlIGluaXRpYXRlZCBmcm9tCgotLSByZXF1aXJlbWVudHM6Ci0tCi0t IGVpdGhlciBnbG9iYWwgbGlua3Mgb3IgZGF0YWJhc2UgbGlua3MgdG8KLS0gdGhlIHNjaGVtYXMg dG8gYmUgY29tcGFyZWQKLS0gCi0tIGRiYSBwcml2aWxlZ2VzCi0tCgotLSB0aGlzIHJlcG9ydCBj cmVhdGVzIHRlbXBvcmFyeSB0YWJsZXMgZm9yIGl0J3MgcmVwb3J0cwotLSB0aGV5IGFyZSBsZWZ0 IGludGFjdCBmb3IgeW91ciBwZXJ1c2FsCi0tIHRhYmxlczoKLS0gICBhcmdfZGlmZgotLSAgIGlu ZGV4X2RpZmYKLS0gICB0YWJsZV9kaWZmCi0tCgotLSBSRVBPUlQgU1VNTUFSWQoKLS0gdGFibGVf ZGlmZi50eHQKLS0gdGhpcyByZXBvcnQgY29tcGFyZXMgdGFibGVzIGZyb20gMiBzY2hlbWFzCi0t IGluY2x1ZGVkIGFyZSAKLS0gICAgdGFibGVzL2NvbHVtbnMgdGhhdCBhcHBlYXIgaW4gYSB0YWJs ZSBpbgotLSAgICBvbmUgc2NoZW1hLCBhbmQgbm90IHRoZSBvdGhlcgotLQotLSAgICBhbnkgZGlm ZmVyZW5jZXMgYmV0d2VlbiBjb2x1bW5zOyBpbmNsdWRlcwotLSAgICBvcmRlciBvZiBjb2x1bW4s IHR5cGUgYW5kIHNpemUuCgoKLS0gaW5kZXhfZGlmZi50eHQKLS0gdGhpcyByZXBvcnQgY29tcGFy ZXMgaW5kZXhlcyBmcm9tIDIgc2NoZW1hcwotLSBpbmNsdWRlZCBhcmUKLS0gICAgaW5kZXhlcyB0 aGF0IGFwcGVhciBpbiBvbmUgc2NoZW1hIAotLSAgICBhbmQgbm90IHRoZSBvdGhlcgotLQotLSAg ICBhbnkgZGlmZmVyZW5jZXMgYmV0d2VlbiBpbmRleCBzdHJ1Y3R1cmVzCi0tICAgIGRvZXMgbm90 IGNoZWNrIGZvciBzdG9yYWdlIHBhcm1zCgotLSBhcmdfZGlmZi50eHQKLS0gdGhpcyByZXBvcnQg Y29tcGFyZXMgYXJndW1lbnRzIGZyb20gMiBzY2hlbWFzCi0tIGluY2x1ZGVkIGFyZQotLSAgICBh bGwgcHJvY2VkdXJlcy9wYWNrYWdlcy9mdW5jdGlvbnMgIGFuZCB0aGVpcgotLSAgICBhcmd1bWVu dHMgKCBpZiBhbnkgKSB0aGF0IGFwcGVhciBpbiBvbmUgc2NoZW1hCi0tICAgIGFuZCBub3QgdGhl IG90aGVyCi0tCi0tICAgIGFueSBkaWZmZXJlbmNlcyBpbiBhcmd1bWVudHMKLS0KLS0gbm90ZTog IHRoaXMgY3VycmVudGx5IHdpbGwgbm90IGZpbmQgcGFja2FnZXMKLS0gICAgICAgIGNyZWF0ZWQg Zm9yIGdsb2JhbCB2YXJpYWJsZXMKLS0gICAgICAgIGkuZS46IHRob3NlIHBhY2thZ2VzIGNyZWF0 ZWQgd2l0aG91dAotLSAgICAgICAgYSBib2R5IGFuZCB3aG9zZSBoZWFkZXIgY29udGFpbnMKLS0g ICAgICAgIG9ubHkgdmFyaWFibGVzCgoKLS0gc2VxdWVuY2VfZGlmZi50eHQKLS0gdGhpcyByZXBv cnQgY29tcGFyZXMgc2VxdWVuY2VzIGZyb20gMiBzY2hlbWFzCi0tCi0tIHRoaXMgcmVwb3J0IG1h eSBpbmNsdWRlIGZhbHNlIHBvc2l0aXZlcyBzaW5jZQotLSBzZXF1ZW5jZSBpbmZvcm1hdGlvbiBp biB0aGUgZGF0YWJhc2UgaXMgZHluYW1pYwoKCgotLSAwNi8xNS8xOTk5IC0gYWRkZWQgc29tZSBt b3JlIGZlYXR1cmVzCgoKQGNsZWFycwpAY29sdW1ucwoKY29sIGN1c2VyXzEgbm9wcmludCBuZXdf dmFsdWUgIHV1c2VyXzEKY29sIGN1c2VyXzIgbm9wcmludCBuZXdfdmFsdWUgIHV1c2VyXzIKY29s IGNpbnN0YW5jZV8xIG5vcHJpbnQgbmV3X3ZhbHVlICB1aW5zdGFuY2VfMQpjb2wgY2luc3RhbmNl XzIgbm9wcmludCBuZXdfdmFsdWUgIHVpbnN0YW5jZV8yCgpwcm9tcHQKcHJvbXB0CnByb21wdCBz Y2hlbWFfZGlmZiB3aWxsIHJlcG9ydCBkaWZmZXJlbmNlcyBpbiB0YWJsZXMKcHJvbXB0IGJldHdl ZW4gYW55IDIgdXNlcnMgb24gYW55IDIgZGF0YWJhc2VzCnByb21wdAoKc2V0IHRlcm0gb24gZmVl ZCBvbgpwcm9tcHQgVXNlciAxOgpzZXQgdGVybSBvZmYgZmVlZCBvZmYKc2VsZWN0IHVwcGVyKCcm MScpIGN1c2VyXzEgZnJvbSBkdWFsOwoKc2V0IHRlcm0gb24gZmVlZCBvbgpwcm9tcHQgaW5zdGFu Y2UgMToKc2V0IHRlcm0gb2ZmIGZlZWQgb2ZmCnNlbGVjdCB1cHBlcignJjInKSBjaW5zdGFuY2Vf MSBmcm9tIGR1YWw7CgpzZXQgdGVybSBvbiBmZWVkIG9uCnByb21wdCBVc2VyIDI6CnNldCB0ZXJt IG9mZiBmZWVkIG9mZgpzZWxlY3QgdXBwZXIoJyYzJykgY3VzZXJfMiBmcm9tIGR1YWw7CgpzZXQg dGVybSBvbiBmZWVkIG9uCnByb21wdCBpbnN0YW5jZSAyOgpzZXQgdGVybSBvZmYgZmVlZCBvZmYK c2VsZWN0IHVwcGVyKCcmNCcpIGNpbnN0YW5jZV8yIGZyb20gZHVhbDsKCnNldCB0ZXJtIG9uIGZl ZWQgb24KCi0tIGRvIHRhYmxlIGRpZmYKcHJvbXB0CnByb21wdCBDcmVhdGluZyB0YWJsZSBkaWZm ZXJlbmNlIGRhdGEKcHJvbXB0Cgpkcm9wIHRhYmxlIHRhYmxlX2RpZmY7CgpjcmVhdGUgdGFibGUg dGFibGVfZGlmZiBhcyAKc2VsZWN0IHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUs IGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNpc2lvbiwgZGF0YV9zY2FsZQpmcm9tIGFsbF90YWJfY29s dW1uc0AmJnVpbnN0YW5jZV8xCndoZXJlICAxPTIKLwoKYWx0ZXIgdGFibGUgdGFibGVfZGlmZiBh ZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpICk7CgoKY3JlYXRlIGluZGV4IHRhYmxlX2RpZmZfaWR4 IG9uIHRhYmxlX2RpZmYgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgaW5zdGFuY2UgKTsKCmlu c2VydCBpbnRvIHRhYmxlX2RpZmYgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGF0YV90eXBl LCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUgKQoJc2VsZWN0IHRhYmxl X25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUsIGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNpc2lv biwgZGF0YV9zY2FsZQoJZnJvbSBhbGxfdGFiX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMQoJd2hlcmUg b3duZXIgPSAnJiZ1dXNlcl8xJwoJbWludXMKCXNlbGVjdCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFt ZSwgZGF0YV90eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUKCWZy b20gYWxsX3RhYl9jb2x1bW5zQCYmdWluc3RhbmNlXzIKCXdoZXJlIG93bmVyID0gJyYmdXVzZXJf MicKLwoKdXBkYXRlIHRhYmxlX2RpZmYgc2V0IGluc3RhbmNlID0gJyYmdWluc3RhbmNlXzEnOwoK aW5zZXJ0IGludG8gdGFibGVfZGlmZiAgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGF0YV90 eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUgKQoJc2VsZWN0IHRh YmxlX25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUsIGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNp c2lvbiwgZGF0YV9zY2FsZQoJZnJvbSBhbGxfdGFiX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMgoJd2hl cmUgb3duZXIgPSAnJiZ1dXNlcl8yJwoJbWludXMKCXNlbGVjdCB0YWJsZV9uYW1lLCBjb2x1bW5f bmFtZSwgZGF0YV90eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUK CWZyb20gYWxsX3RhYl9jb2x1bW5zQCYmdWluc3RhbmNlXzEKCXdoZXJlIG93bmVyID0gJyYmdXVz ZXJfMScKLwoKdXBkYXRlIHRhYmxlX2RpZmYgc2V0IGluc3RhbmNlID0gJyYmdWluc3RhbmNlXzIn IHdoZXJlIGluc3RhbmNlIGlzIG51bGw7Cgpjb21taXQ7CgotLSBkbyBpbmRleCBkaWZmCnByb21w dApwcm9tcHQgQ3JlYXRpbmcgaW5kZXggZGlmZmVyZW5jZSBkYXRhCnByb21wdAoKCmRyb3AgdGFi bGUgaW5kZXhfZGlmZjsKCmNyZWF0ZSB0YWJsZSBpbmRleF9kaWZmIGFzIApzZWxlY3QgaW5kZXhf bmFtZSwgdGFibGVfbmFtZSwgY29sdW1uX25hbWUsIGNvbHVtbl9wb3NpdGlvbiwgY29sdW1uX2xl bmd0aApmcm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0YW5jZV8xCndoZXJlICAxPTIKLwoKYWx0 ZXIgdGFibGUgaW5kZXhfZGlmZiBhZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpICk7CgpjcmVhdGUg aW5kZXggaW5kZXhfZGlmZl9pZHggb24gaW5kZXhfZGlmZiAoIAoJdGFibGVfbmFtZSwgCgljb2x1 bW5fbmFtZSwgY29sdW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCikKLwoKaW5zZXJ0IGludG8g aW5kZXhfZGlmZiAoIGluZGV4X25hbWUsICB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29sdW1u X3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoICkKCXNlbGVjdCBpbmRleF9uYW1lLCAgdGFibGVfbmFt ZSwgY29sdW1uX25hbWUsIGNvbHVtbl9wb3NpdGlvbiwgY29sdW1uX2xlbmd0aAoJZnJvbSBhbGxf aW5kX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMQoJd2hlcmUgaW5kZXhfb3duZXIgPSAnJiZ1dXNlcl8x JwoJbWludXMKCXNlbGVjdCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29s dW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCglmcm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0 YW5jZV8yCgl3aGVyZSBpbmRleF9vd25lciA9ICcmJnV1c2VyXzInCi8KCnVwZGF0ZSBpbmRleF9k aWZmIHNldCBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJzsKCmluc2VydCBpbnRvIGluZGV4X2Rp ZmYgKCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29sdW1uX3Bvc2l0aW9u LCBjb2x1bW5fbGVuZ3RoICkKCXNlbGVjdCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5f bmFtZSwgY29sdW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCglmcm9tIGFsbF9pbmRfY29sdW1u c0AmJnVpbnN0YW5jZV8yCgl3aGVyZSBpbmRleF9vd25lciA9ICcmJnV1c2VyXzInCgltaW51cwoJ c2VsZWN0IGluZGV4X25hbWUsIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBjb2x1bW5fcG9zaXRp b24sIGNvbHVtbl9sZW5ndGgKCWZyb20gYWxsX2luZF9jb2x1bW5zQCYmdWluc3RhbmNlXzEKCXdo ZXJlIGluZGV4X293bmVyID0gJyYmdXVzZXJfMScKLwoKdXBkYXRlIGluZGV4X2RpZmYgc2V0IGlu c3RhbmNlID0gJyYmdWluc3RhbmNlXzInIHdoZXJlIGluc3RhbmNlIGlzIG51bGw7CgoKY29tbWl0 OwoKCi0tIGRvIGFyZ3VtZW50IGRpZmYKcHJvbXB0CnByb21wdCBDcmVhdGluZyBhcmd1bWVudHMg ZGlmZmVyZW5jZSBkYXRhCnByb21wdAoKZHJvcCB0YWJsZSBhcmdfZGlmZjsKCmNyZWF0ZSB0YWJs ZSBhcmdfZGlmZiBhcyAKU0VMRUNUCglvYmojIG9iaiMKCSxwcm9jZWR1cmUkIHByb2NlZHVyZQoJ LGFyZ3VtZW50IGFyZ3VtZW50CgksdHlwZSB0eXBlCiAgICxvdmVybG9hZCMgb3ZlcmxvYWQKICAg LHBvc2l0aW9uIHBvc2l0aW9uCgksc2VxdWVuY2UjIHNlcXVlbmNlCiAgICxkZWZhdWx0IyAiREVG QVVMVCIKICAgLGluX291dCBpbl9vdXQKICAgLGxldmVsIyAiTEVWRUwiCgksbGVuZ3RoIGxlbmd0 aAogICAscHJlY2lzaW9uICJQUkVDSVNJT04iCiAgICxzY2FsZSBzY2FsZQogICAscmFkaXggcmFk aXgKRlJPTSBzeXMuQVJHVU1FTlQkQCZ1aW5zdGFuY2VfMQp3aGVyZSAxID0gMgovCgphbHRlciB0 YWJsZSBhcmdfZGlmZiBhZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpLCBvYmplY3RfbmFtZSB2YXJj aGFyMigzMCksIG9iamVjdF90eXBlIHZhcmNoYXIyKDEzKSApOwphbHRlciB0YWJsZSBhcmdfZGlm ZiBtb2RpZnkoIG9iaiMgbnVsbCApOwoKY3JlYXRlIGluZGV4IGFyZ19kaWZmX2lkeCBvbiBhcmdf ZGlmZiAoIG9iaiMsIGFyZ3VtZW50LCB0eXBlICk7CgppbnNlcnQgaW50byBhcmdfZGlmZiAKCSgK CQkgb2JqZWN0X25hbWUsIG9iamVjdF90eXBlLCBwcm9jZWR1cmUsIGFyZ3VtZW50LCB0eXBlLCBv dmVybG9hZCwgcG9zaXRpb24sIHNlcXVlbmNlLAoJCSJERUZBVUxUIiwgaW5fb3V0LCAiTEVWRUwi LCBsZW5ndGgsICJQUkVDSVNJT04iLCBzY2FsZSwgcmFkaXgKCSkKCXNlbGVjdCAKCQlvYmoub2Jq ZWN0X25hbWUgLG9iai5vYmplY3RfdHlwZSAsYXJnLnByb2NlZHVyZSQgLGFyZy5hcmd1bWVudAoJ CSxhcmcudHlwZSAsYXJnLm92ZXJsb2FkIyAsYXJnLnBvc2l0aW9uICxhcmcuc2VxdWVuY2UjICxh cmcuZGVmYXVsdCMgLGFyZy5pbl9vdXQKICAgCSxhcmcubGV2ZWwjICxhcmcubGVuZ3RoICxhcmcu cHJlY2lzaW9uICxhcmcuc2NhbGUgLGFyZy5yYWRpeAoJZnJvbSBzeXMuYXJndW1lbnQkQCYmdWlu c3RhbmNlXzEgYXJnLCBkYmFfb2JqZWN0c0AmJnVpbnN0YW5jZV8xIG9iagoJd2hlcmUgYXJnLm9i aiMgPSBvYmoub2JqZWN0X2lkCglhbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMScKCW1pbnVzCglz ZWxlY3QgCgkJb2JqLm9iamVjdF9uYW1lICxvYmoub2JqZWN0X3R5cGUgLGFyZy5wcm9jZWR1cmUk ICxhcmcuYXJndW1lbnQKCQksYXJnLnR5cGUgLGFyZy5vdmVybG9hZCMgLGFyZy5wb3NpdGlvbiAs YXJnLnNlcXVlbmNlIyAsYXJnLmRlZmF1bHQjICxhcmcuaW5fb3V0CiAgIAksYXJnLmxldmVsIyAs YXJnLmxlbmd0aCAsYXJnLnByZWNpc2lvbiAsYXJnLnNjYWxlICxhcmcucmFkaXgKCWZyb20gc3lz LmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yIGFyZywgZGJhX29iamVjdHNAJiZ1aW5zdGFuY2VfMiBv YmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5vd25lciA9ICcmJnV1 c2VyXzInCi8KCgp1cGRhdGUgYXJnX2RpZmYgCnNldCBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8x JwovCgotLSBjcmVhdGUgdG1wIHRhYmxlcyB0byBkbyB0aGVzZSB1cGRhdGVzCi0tIGl0IHdpbGwg YmUgTVVDSCBmYXN0ZXIKCmRyb3AgdGFibGUgcmVtb3RlX2RiYV9vYmplY3RzOwpkcm9wIHRhYmxl IHJlbW90ZV9hcmd1bWVudHM7CgpjcmVhdGUgdGFibGUgcmVtb3RlX2RiYV9vYmplY3RzCmFzIApz ZWxlY3QgKgpmcm9tIGRiYV9vYmplY3RzQCYmdWluc3RhbmNlXzEKLwoKY3JlYXRlIGluZGV4IHJl bW90ZV9kYmFfb2JqZWN0X2lkeDEgCm9uIHJlbW90ZV9kYmFfb2JqZWN0cyggb2JqZWN0X3R5cGUs IG9iamVjdF9pZCApCi8KCmNyZWF0ZSBpbmRleCByZW1vdGVfZGJhX29iamVjdF9pZHgyCm9uIHJl bW90ZV9kYmFfb2JqZWN0cyggb2JqZWN0X2lkICkKLwoKY3JlYXRlIHRhYmxlIHJlbW90ZV9hcmd1 bWVudHMKYXMKc2VsZWN0IAoJb2JqIywgcHJvY2VkdXJlJCxvdmVybG9hZCMscG9zaXRpb24sc2Vx dWVuY2UjLGxldmVsIywKCWFyZ3VtZW50LHR5cGUsZGVmYXVsdCMsaW5fb3V0LGxlbmd0aCxwcmVj aXNpb24sc2NhbGUsCglyYWRpeCxkZWZsZW5ndGgKZnJvbSBzeXMuYXJndW1lbnQkQCYmdWluc3Rh bmNlXzEKLwoKY3JlYXRlIGluZGV4IHJlbW90ZV9hcmd1bWVudHNfaWR4MQpvbiByZW1vdGVfYXJn dW1lbnRzKCBhcmd1bWVudCwgdHlwZSApCi8KCnVwZGF0ZSBhcmdfZGlmZiAgZGlmZgpzZXQgIG9i aiMgPSAoCglzZWxlY3Qgb2JqIyAKCWZyb20gcmVtb3RlX2FyZ3VtZW50cyBhcmcsIHJlbW90ZV9k YmFfb2JqZWN0cyBvYmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5v YmplY3RfbmFtZSA9IGRpZmYub2JqZWN0X25hbWUKCWFuZCBvYmoub2JqZWN0X3R5cGUgPSBkaWZm Lm9iamVjdF90eXBlCglhbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMScKCWFuZCBudmwoYXJnLnBy b2NlZHVyZSQsICdOT05FJykgPSBudmwoZGlmZi5wcm9jZWR1cmUsICdOT05FJykKCWFuZCBhcmcu YXJndW1lbnQgPSBkaWZmLmFyZ3VtZW50CglhbmQgYXJnLnR5cGUgPSBkaWZmLnR5cGUKCWFuZCBh cmcub3ZlcmxvYWQjID0gZGlmZi5vdmVybG9hZAoJYW5kIGRpZmYuaW5zdGFuY2UgPSAnJiZ1aW5z dGFuY2VfMScKKQp3aGVyZSBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJwovCgogCmluc2VydCBp bnRvIGFyZ19kaWZmIAoJKAoJCW9iamVjdF9uYW1lLCBvYmplY3RfdHlwZSwgcHJvY2VkdXJlLCBh cmd1bWVudCwgdHlwZSwgb3ZlcmxvYWQsIHBvc2l0aW9uLCBzZXF1ZW5jZSwKCQkiREVGQVVMVCIs IGluX291dCwgIkxFVkVMIiwgbGVuZ3RoLCAiUFJFQ0lTSU9OIiwgc2NhbGUsIHJhZGl4CgkpCglz ZWxlY3QgCgkJb2JqLm9iamVjdF9uYW1lICxvYmoub2JqZWN0X3R5cGUgLGFyZy5wcm9jZWR1cmUk ICxhcmcuYXJndW1lbnQKCQksYXJnLnR5cGUgLGFyZy5vdmVybG9hZCMgLGFyZy5wb3NpdGlvbiAs YXJnLnNlcXVlbmNlIyAsYXJnLmRlZmF1bHQjICxhcmcuaW5fb3V0CiAgIAksYXJnLmxldmVsIyAs YXJnLmxlbmd0aCAsYXJnLnByZWNpc2lvbiAsYXJnLnNjYWxlICxhcmcucmFkaXgKCWZyb20gc3lz LmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yIGFyZywgZGJhX29iamVjdHNAJiZ1aW5zdGFuY2VfMiBv YmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5vd25lciA9ICcmJnV1 c2VyXzInCgltaW51cwoJc2VsZWN0IAoJCW9iai5vYmplY3RfbmFtZSAsb2JqLm9iamVjdF90eXBl ICxhcmcucHJvY2VkdXJlJCAsYXJnLmFyZ3VtZW50CgkJLGFyZy50eXBlICxhcmcub3ZlcmxvYWQj ICxhcmcucG9zaXRpb24gLGFyZy5zZXF1ZW5jZSMgLGFyZy5kZWZhdWx0IyAsYXJnLmluX291dAog ICAJLGFyZy5sZXZlbCMgLGFyZy5sZW5ndGggLGFyZy5wcmVjaXNpb24gLGFyZy5zY2FsZSAsYXJn LnJhZGl4Cglmcm9tIHN5cy5hcmd1bWVudCRAJiZ1aW5zdGFuY2VfMSBhcmcsIGRiYV9vYmplY3Rz QCYmdWluc3RhbmNlXzEgb2JqCgl3aGVyZSBhcmcub2JqIyA9IG9iai5vYmplY3RfaWQKCWFuZCBv Ymoub3duZXIgPSAnJiZ1dXNlcl8xJwovCgp1cGRhdGUgYXJnX2RpZmYgCnNldCBpbnN0YW5jZSA9 ICcmJnVpbnN0YW5jZV8yJwp3aGVyZSBpbnN0YW5jZSBpcyBudWxsCi8KCi0tIGNyZWF0ZSB0bXAg dGFibGVzIHRvIGRvIHRoZXNlIHVwZGF0ZXMKLS0gaXQgd2lsbCBiZSBNVUNIIGZhc3RlcgoKZHJv cCB0YWJsZSByZW1vdGVfZGJhX29iamVjdHM7CmRyb3AgdGFibGUgcmVtb3RlX2FyZ3VtZW50czsK CmNyZWF0ZSB0YWJsZSByZW1vdGVfZGJhX29iamVjdHMKYXMgCnNlbGVjdCAqCmZyb20gZGJhX29i amVjdHNAJiZ1aW5zdGFuY2VfMgovCgpjcmVhdGUgaW5kZXggcmVtb3RlX2RiYV9vYmplY3RfaWR4 MSAKb24gcmVtb3RlX2RiYV9vYmplY3RzKCBvYmplY3RfdHlwZSwgb2JqZWN0X2lkICkKLwoKY3Jl YXRlIGluZGV4IHJlbW90ZV9kYmFfb2JqZWN0X2lkeDIKb24gcmVtb3RlX2RiYV9vYmplY3RzKCBv YmplY3RfaWQgKQovCgpjcmVhdGUgdGFibGUgcmVtb3RlX2FyZ3VtZW50cwphcwpzZWxlY3QKCW9i aiMsIHByb2NlZHVyZSQsb3ZlcmxvYWQjLHBvc2l0aW9uLHNlcXVlbmNlIyxsZXZlbCMsCglhcmd1 bWVudCx0eXBlLGRlZmF1bHQjLGluX291dCxsZW5ndGgscHJlY2lzaW9uLHNjYWxlLAoJcmFkaXgs ZGVmbGVuZ3RoCmZyb20gc3lzLmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yCi8KCmNyZWF0ZSBpbmRl eCByZW1vdGVfYXJndW1lbnRzX2lkeDEKb24gcmVtb3RlX2FyZ3VtZW50cyggYXJndW1lbnQsIHR5 cGUgKQovCgoKdXBkYXRlIGFyZ19kaWZmICBkaWZmCnNldCAgb2JqIyA9ICgKCXNlbGVjdCBvYmoj IAoJZnJvbSByZW1vdGVfYXJndW1lbnRzIGFyZywgcmVtb3RlX2RiYV9vYmplY3RzIG9iagoJd2hl cmUgYXJnLm9iaiMgPSBvYmoub2JqZWN0X2lkCglhbmQgb2JqLm9iamVjdF9uYW1lID0gZGlmZi5v YmplY3RfbmFtZQoJYW5kIG9iai5vYmplY3RfdHlwZSA9IGRpZmYub2JqZWN0X3R5cGUKCWFuZCBv Ymoub3duZXIgPSAnJiZ1dXNlcl8yJwoJYW5kIG52bChhcmcucHJvY2VkdXJlJCwgJ05PTkUnKSA9 IG52bChkaWZmLnByb2NlZHVyZSwgJ05PTkUnKQoJYW5kIGFyZy5hcmd1bWVudCA9IGRpZmYuYXJn dW1lbnQKCWFuZCBhcmcudHlwZSA9IGRpZmYudHlwZQoJYW5kIGFyZy5vdmVybG9hZCMgPSBkaWZm Lm92ZXJsb2FkCglhbmQgZGlmZi5pbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8yJwopCndoZXJlIGlu c3RhbmNlID0gJyYmdWluc3RhbmNlXzInCi8KCgpkcm9wIHRhYmxlIHJlbW90ZV9kYmFfb2JqZWN0 czsKZHJvcCB0YWJsZSByZW1vdGVfYXJndW1lbnRzOwoKCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gcmVwb3J0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgoKYnJlYWsgb24gdGFibGVfbmFtZSBvbiBjb2x1bW5fbmFtZSBvbiB1 c2VybmFtZQoKY29sIGRhdGFfcHJlY2lzaW9uIGZvcm1hdCA5OTk5OTkgaGVhZCAnUFJFQycKY29s IGRhdGFfc2NhbGUgZm9ybWF0IDk5OTk5OSBoZWFkICdTQ0FMRScKY29sIGRhdGFfbGVuZ3RoIGZv cm1hdCA5OTk5OTkgaGVhZCAnTEVOR1RIJwpjb2wgY29sdW1uX25hbWUgZm9ybWF0IGEzMCBoZWFk ICdDT0xVTU4gTkFNRScKCnNldCB0cmltc3Bvb2wgb24KCi0tIHRhYmxlIGRpZmYgcmVwb3J0Cgpz cG9vbCB0YWJsZV9kaWZmLnR4dAoKQHRpdGxlICdUYWJsZSBEaWZmcyBVc2VyMTogJiZ1dXNlcl8x QCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVpbnN0YW5jZV8yJyAxMjAKCnNlbGVj dAoJdDEudGFibGVfbmFtZSwgCgl0MS5jb2x1bW5fbmFtZSwgCgknJiZ1dXNlcl8xJyB1c2VybmFt ZSwKCWluc3RhbmNlLAoJdDEuZGF0YV90eXBlLCAKCXQxLmRhdGFfcHJlY2lzaW9uLCAKCXQxLmRh dGFfc2NhbGUsCgl0MS5kYXRhX2xlbmd0aApmcm9tIGFsbF90YWJfY29sdW1uc0AmJnVpbnN0YW5j ZV8xIHQxLCB0YWJsZV9kaWZmIGQxCndoZXJlIG93bmVyID0gJyYmdXVzZXJfMScKYW5kIHQxLnRh YmxlX25hbWUgID0gZDEudGFibGVfbmFtZQphbmQgdDEuY29sdW1uX25hbWUgPSBkMS5jb2x1bW5f bmFtZQphbmQgZDEuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMScKdW5pb24gYWxsCnNlbGVjdAoJ dDIudGFibGVfbmFtZSwgCgl0Mi5jb2x1bW5fbmFtZSwgCgknJiZ1dXNlcl8yJyB1c2VybmFtZSwK CWluc3RhbmNlLAoJdDIuZGF0YV90eXBlLCAKCXQyLmRhdGFfbGVuZ3RoLCAKCXQyLmRhdGFfc2Nh bGUsCgl0Mi5kYXRhX3ByZWNpc2lvbgpmcm9tIGFsbF90YWJfY29sdW1uc0AmJnVpbnN0YW5jZV8y IHQyLCB0YWJsZV9kaWZmIGQyCndoZXJlIG93bmVyID0gJyYmdXVzZXJfMicKYW5kIHQyLnRhYmxl X25hbWUgID0gZDIudGFibGVfbmFtZQphbmQgdDIuY29sdW1uX25hbWUgPSBkMi5jb2x1bW5fbmFt ZQphbmQgZDIuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwyLDMsNAovCgot LSBpbmRleCBkaWZmIHJlcG9ydAoKYnJlYWsgb24gaW5kZXhfbmFtZSBvbiB0YWJsZV9uYW1lCgpj b2wgZGF0YV9wcmVjaXNpb24gZm9ybWF0IDk5OTk5OSBoZWFkICdQUkVDJwpjb2wgZGF0YV9zY2Fs ZSBmb3JtYXQgOTk5OTk5IGhlYWQgJ1NDQUxFJwpjb2wgZGF0YV9sZW5ndGggZm9ybWF0IDk5OTk5 OSBoZWFkICdMRU5HVEgnCmNvbCBjb2x1bW5fbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ0NPTFVNTiBO QU1FJwoKY29sIGNvbHVtbl9wb3NpdGlvbiBmb3JtYXQgOTk5IGhlYWQgJ0NPTHxQT1MnCmNvbCBj b2x1bW5fbGVuZ3RoIGZvcm1hdCA5OTk5OSBoZWFkICdDT0x8TEVOJwoKQHRpdGxlICdJbmRleCBE aWZmcyBVc2VyMTogJiZ1dXNlcl8xQCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVp bnN0YW5jZV8yJyAxMzUKCmNvbCB1c2VybmFtZSBmb3JtYXQgYTEwIGhlYWQgJ0lOREVYfE9XTkVS JwoKc3Bvb2wgaW5kZXhfZGlmZi50eHQKCnNlbGVjdAoJdDEuaW5kZXhfbmFtZSwgCgknJiZ1dXNl cl8xJyB1c2VybmFtZSwKCWluc3RhbmNlLAoJdDEudGFibGVfbmFtZSwKCXQxLmNvbHVtbl9uYW1l LAoJdDEuY29sdW1uX3Bvc2l0aW9uLAoJdDEuY29sdW1uX2xlbmd0aApmcm9tIGFsbF9pbmRfY29s dW1uc0AmJnVpbnN0YW5jZV8xIHQxLCBpbmRleF9kaWZmIGQxCndoZXJlIGluZGV4X293bmVyID0g JyYmdXVzZXJfMScKYW5kIHQxLnRhYmxlX25hbWUgID0gZDEudGFibGVfbmFtZQphbmQgdDEuY29s dW1uX25hbWUgPSBkMS5jb2x1bW5fbmFtZQphbmQgdDEuY29sdW1uX3Bvc2l0aW9uID0gZDEuY29s dW1uX3Bvc2l0aW9uCmFuZCB0MS5jb2x1bW5fbGVuZ3RoID0gZDEuY29sdW1uX2xlbmd0aAphbmQg ZDEuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMScKdW5pb24gYWxsCnNlbGVjdAoJdDIuaW5kZXhf bmFtZSwgCgknJiZ1dXNlcl8yJyB1c2VybmFtZSwKCWluc3RhbmNlLAoJdDIudGFibGVfbmFtZSwK CXQyLmNvbHVtbl9uYW1lLAoJdDIuY29sdW1uX3Bvc2l0aW9uLAoJdDIuY29sdW1uX2xlbmd0aApm cm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0YW5jZV8yIHQyLCBpbmRleF9kaWZmIGQyCndoZXJl IGluZGV4X293bmVyID0gJyYmdXVzZXJfMicKYW5kIHQyLnRhYmxlX25hbWUgID0gZDIudGFibGVf bmFtZQphbmQgdDIuY29sdW1uX25hbWUgPSBkMi5jb2x1bW5fbmFtZQphbmQgdDIuY29sdW1uX3Bv c2l0aW9uID0gZDIuY29sdW1uX3Bvc2l0aW9uCmFuZCB0Mi5jb2x1bW5fbGVuZ3RoID0gZDIuY29s dW1uX2xlbmd0aAphbmQgZDIuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwy LDMsNCw1LDYKLwoKCi0tIGFyZ3VtZW50IGRpZmYgcmVwb3J0Cgpjb2wgcHJvY2VkdXJlIGZvcm1h dCBhNDAgaGVhZCAnUFJPQ0VEVVJFJwoKYnJlYWsgb24gcHJvY2VkdXJlIG9uIG92ZXJsb2FkCgpA dGl0bGUgJ0FyZ3VtZW50IERpZmZzIFVzZXIxOiAmJnV1c2VyXzFAJiZ1aW5zdGFuY2VfMSBVc2Vy MjogJiZ1dXNlcl8yQCYmdWluc3RhbmNlXzInIDIwMAoKc3Bvb2wgYXJnX2RpZmYudHh0CgpTRUxF Q1QKCXN1YnN0cigKCQlvYmouT0JKRUNUX05BTUV8fAoJCWRlY29kZSggYXJnLnByb2NlZHVyZSQs bnVsbCwnJywnLicpIHx8CgkJYXJnLnByb2NlZHVyZSQsMSw2MAoJKSBwcm9jZWR1cmUKICAgLGFy Zy5PVkVSTE9BRCMgb3ZlcmxvYWQKCSxhcmcuQVJHVU1FTlQKCSxkaWZmLmluc3RhbmNlCgksb2Jq Lm9iamVjdF90eXBlCgksZGVjb2RlKGFyZy50eXBlLAoJCTEsICdWQVJDSEFSMicsCgkJMiwgJ05V TUJFUicsCgkJOCwgJ0xPTkcnLAoJCTksICdWQVJDSEFSJywKCQkxMiwgJ0RBVEUnLAoJCTIzLCAn UkFXJywKCQkyNCwgJ0xPTkcgUkFXJywKCQk2OSwgJ1JPV0lEJywKCQk5NiwgJ0NIQVInLAoJCTI1 MCwgJ1JFQ09SRCcsCgkJMjUyLCAnQk9PTEVBTicsCgkJLS0ganVzdCBzaG93IHR5cGUjIGFzIGRl ZmF1bHQKCQlzdWJzdHIodG9fY2hhcihhcmcudHlwZSksMSwxMCkKCSkgdHlwZQogICAsYXJnLlBP U0lUSU9OCiAgICxOVkwoYXJnLkRFRkFVTFQjLDApIERFRkFVTFQjCgksZGVjb2RlKGFyZy5JTl9P VVQsbnVsbCwnSU4nLCAyLCdJTl9PVVQnLCAnVU5LTk9XTicgKSBJTl9PVVQKICAgLE5WTChhcmcu TEVWRUwjLDApIExFVkVMIwoJLE5WTChhcmcuTEVOR1RILDApIExFTkdUSAogICAsTlZMKGFyZy5Q UkVDSVNJT04sMCkgUFJFQ0lTSU9OCiAgICxOVkwoYXJnLlNDQUxFLDApIFNDQUxFCiAgICxOVkwo YXJnLlJBRElYLDApIFJBRElYCmZyb20KCXN5cy5hcmd1bWVudCRAJiZ1aW5zdGFuY2VfMSBhcmcK CSxkYmFfb2JqZWN0c0AmJnVpbnN0YW5jZV8xIG9iagoJLGFyZ19kaWZmIGRpZmYKd2hlcmUgYXJn Lm9iaiMgPSBvYmoub2JqZWN0X2lkCmFuZCBvYmoub3duZXIgPSAnJiZ1dXNlcl8xJwphbmQgZGlm Zi5vYmojID0gYXJnLm9iaiMKYW5kIG52bChkaWZmLnByb2NlZHVyZSwnTk9ORScpID0gbnZsKGFy Zy5wcm9jZWR1cmUkLCdOT05FJykKYW5kIGRpZmYuYXJndW1lbnQgPSBhcmcuYXJndW1lbnQKYW5k IGRpZmYudHlwZSA9IGFyZy50eXBlCmFuZCBkaWZmLm92ZXJsb2FkID0gYXJnLm92ZXJsb2FkIwph bmQgZGlmZi5pbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJwp1bmlvbiBhbGwKU0VMRUNUCglzdWJz dHIoCgkJb2JqLk9CSkVDVF9OQU1FfHwKCQlkZWNvZGUoIGFyZy5wcm9jZWR1cmUkLG51bGwsJycs Jy4nKSB8fAoJCWFyZy5wcm9jZWR1cmUkLDEsNjAKCSkgcHJvY2VkdXJlCiAgICxhcmcuT1ZFUkxP QUQjIG92ZXJsb2FkCgksYXJnLkFSR1VNRU5UCgksZGlmZi5pbnN0YW5jZQoJLG9iai5vYmplY3Rf dHlwZQoJLGRlY29kZShhcmcudHlwZSwKCQkxLCAnVkFSQ0hBUjInLAoJCTIsICdOVU1CRVInLAoJ CTgsICdMT05HJywKCQk5LCAnVkFSQ0hBUicsCgkJMTIsICdEQVRFJywKCQkyMywgJ1JBVycsCgkJ MjQsICdMT05HIFJBVycsCgkJNjksICdST1dJRCcsCgkJOTYsICdDSEFSJywKCQkyNTAsICdSRUNP UkQnLAoJCTI1MiwgJ0JPT0xFQU4nLAoJCS0tIGp1c3Qgc2hvdyB0eXBlIyBhcyBkZWZhdWx0CgkJ c3Vic3RyKHRvX2NoYXIoYXJnLnR5cGUpLDEsMTApCgkpIHR5cGUKICAgLGFyZy5QT1NJVElPTgog ICAsTlZMKGFyZy5ERUZBVUxUIywwKSBERUZBVUxUIwoJLGRlY29kZShhcmcuSU5fT1VULG51bGws J0lOJywgMiwnSU5fT1VUJywgJ1VOS05PV04nICkgSU5fT1VUCiAgICxOVkwoYXJnLkxFVkVMIyww KSBMRVZFTCMKCSxOVkwoYXJnLkxFTkdUSCwwKSBMRU5HVEgKICAgLE5WTChhcmcuUFJFQ0lTSU9O LDApIFBSRUNJU0lPTgogICAsTlZMKGFyZy5TQ0FMRSwwKSBTQ0FMRQogICAsTlZMKGFyZy5SQURJ WCwwKSBSQURJWApmcm9tCglzeXMuYXJndW1lbnQkQCYmdWluc3RhbmNlXzIgYXJnCgksZGJhX29i amVjdHNAJiZ1aW5zdGFuY2VfMiBvYmoKCSxhcmdfZGlmZiBkaWZmCndoZXJlIGFyZy5vYmojID0g b2JqLm9iamVjdF9pZAphbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMicKYW5kIGRpZmYub2JqIyA9 IGFyZy5vYmojCmFuZCBudmwoZGlmZi5wcm9jZWR1cmUsJ05PTkUnKSA9IG52bChhcmcucHJvY2Vk dXJlJCwnTk9ORScpCmFuZCBkaWZmLmFyZ3VtZW50ID0gYXJnLmFyZ3VtZW50CmFuZCBkaWZmLnR5 cGUgPSBhcmcudHlwZQphbmQgZGlmZi5vdmVybG9hZCA9IGFyZy5vdmVybG9hZCMKYW5kIGRpZmYu aW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwyLDMsNCw1Ci8KCgotLSBzZXF1 ZW5jZSBkaWZmIHJlcG9ydAoKQHRpdGxlICdTZXF1ZW5jZSBEaWZmcyBVc2VyMTogJiZ1dXNlcl8x QCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVpbnN0YW5jZV8yJyAxMTAKCmNvbCBz ZXF1ZW5jZV9uYW1lIGZvcm1hdCBhMzAgaGVhZCAnU0VRVUVOQ0UgTkFNRScKY29sIGxhc3RfbnVt YmVyIGZvcm1hdCA5OTk5OTk5OTk5OTkgaGVhZCAnTEFTVHxOVU1CRVInCmNvbCBtaW5fdmFsdWUg Zm9ybWF0IDk5OTk5OTk5OTkgaGVhZCAnTUlOfFZBTFVFJwpjb2wgbWF4X3ZhbHVlIGZvcm1hdCA5 OTk5OTk5OTk5OTkgaGVhZCAnTUFYfFZBTFVFJwpjb2wgaW5jcmVtZW50X2J5IGZvcm1hdCA5OTk5 OTkgaGVhZCAnSU5DUkVNRU5UJwpjb2wgY2FjaGVfc2l6ZSBmb3JtYXQgOTk5OTk5IGhlYWQgJ0NB Q0hFfFNJWkUnCmNvbCBjeWNsZV9mbGFnIGZvcm1hdCBhNSBoZWFkICdDWUNMRXxGTEFHJwpjb2wg b3JkZXJfZmxhZyBmb3JtYXQgYTUgaGVhZCAnT1JERVJ8RkxBRycKCmJyZWFrIG9uIHNlcXVlbmNl X25hbWUgc2tpcCAxCgpzcG9vbCBzZXF1ZW5jZV9kaWZmLnR4dAoKKAoJKCAKCQlzZWxlY3QKCQkJ c2VxdWVuY2VfbmFtZSwgJyYmdWluc3RhbmNlXzEnIGluc3RhbmNlICxsYXN0X251bWJlciwgbWlu X3ZhbHVlLG1heF92YWx1ZSwKCQkJaW5jcmVtZW50X2J5LGN5Y2xlX2ZsYWcsb3JkZXJfZmxhZywK CQkJY2FjaGVfc2l6ZQoJCWZyb20gZGJhX3NlcXVlbmNlc0AmJnVpbnN0YW5jZV8xCgkJd2hlcmUg c2VxdWVuY2Vfb3duZXIgPSAnJiZ1dXNlcl8xJyAKCSkKCW1pbnVzCgkoIAoJCXNlbGVjdCAKCQkJ c2VxdWVuY2VfbmFtZSwgJyYmdWluc3RhbmNlXzInIGluc3RhbmNlICxsYXN0X251bWJlciwgbWlu X3ZhbHVlLG1heF92YWx1ZSwKCQkJaW5jcmVtZW50X2J5LGN5Y2xlX2ZsYWcsb3JkZXJfZmxhZywK CQkJY2FjaGVfc2l6ZQoJCWZyb20gZGJhX3NlcXVlbmNlc0AmJnVpbnN0YW5jZV8yCgkJd2hlcmUg c2VxdWVuY2Vfb3duZXIgPSAnJiZ1dXNlcl8yJyAKCSkKKQp1bmlvbgooCgkoIAoJCXNlbGVjdAoJ CQlzZXF1ZW5jZV9uYW1lLCAnJiZ1aW5zdGFuY2VfMicgaW5zdGFuY2UgLGxhc3RfbnVtYmVyLCBt aW5fdmFsdWUsbWF4X3ZhbHVlLAoJCQlpbmNyZW1lbnRfYnksY3ljbGVfZmxhZyxvcmRlcl9mbGFn LAoJCQljYWNoZV9zaXplCgkJZnJvbSBkYmFfc2VxdWVuY2VzQCYmdWluc3RhbmNlXzIKCQl3aGVy ZSBzZXF1ZW5jZV9vd25lciA9ICcmJnV1c2VyXzInIAoJKQoJbWludXMKCSggCgkJc2VsZWN0IAoJ CQlzZXF1ZW5jZV9uYW1lLCAnJiZ1aW5zdGFuY2VfMScgaW5zdGFuY2UgLGxhc3RfbnVtYmVyLCBt aW5fdmFsdWUsbWF4X3ZhbHVlLAoJCQlpbmNyZW1lbnRfYnksY3ljbGVfZmxhZyxvcmRlcl9mbGFn LAoJCQljYWNoZV9zaXplCgkJZnJvbSBkYmFfc2VxdWVuY2VzQCYmdWluc3RhbmNlXzEKCQl3aGVy ZSBzZXF1ZW5jZV9vd25lciA9ICcmJnV1c2VyXzEnIAoJKQopCi8KCnNwb29sIG9mZgoKdW5kZWYg MSAyIDMgNAoKcHJvbXB0CnByb21wdApwcm9tcHQKcHJvbXB0IFlvdXIgcmVwb3J0cyBpbiB0aGUg Zm9sbG93aW5nIGZpbGVzOgpwcm9tcHQKcHJvbXB0IHRhYmxlX2RpZmYudHh0CnByb21wdCBpbmRl eF9kaWZmLnR4dApwcm9tcHQgYXJnX2RpZmYudHh0CnByb21wdCBzZXF1ZW5jZV9kaWZmLnR4dApw cm9tcHQKCgo=

--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
  charset="iso-8859-1";
  name="columns.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="columns.sql"

CmNvbCBibG9ja3MgZm9ybWF0IDk5LDk5OSw5OTkgaGVhZCAnQkxPQ0tTJwpjb2wgZGJfbGluayBm b3JtYXQgYTMwIGhlYWQgJ0RCIExJTksnCmNvbCBkYl9saW5rX2luc3RhbmNlIGZvcm1hdCBhMzAg aGVhZCAnREIgTElOS3xJTlNUQU5DRScKY29sIGRiX2xpbmtfdXNlcm5hbWUgZm9ybWF0IGExMCBo ZWFkICdEQiBMSU5LfFVTRVJOQU1FJwpjb2wgZW1wdHlfYmxvY2tzIGZvcm1hdCA5OSw5OTksOTk5 IGhlYWQgJ0VNUFRZIEJMT0NLUycKY29sIGhvc3QgZm9ybWF0IGExMCBoZWFkICdIT1NUJwpjb2wg aW5kZXhfbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ0lOREVYIE5BTUUnCmNvbCBpbml0aWFsX2V4dGVu dCBmb3JtYXQgOSw5OTksOTk5LDk5OSBoZWFkICdJTklUSUFMfEVYVEVOVCcKY29sIGluc3RhbmNl IGZvcm1hdCBhNCBoZWFkICdJTlNUJwpjb2wgbWF4X2Jsb2NrcyBmb3JtYXQgOSw5OTksOTk5IGhl YWQgJ01BWCBCTE9DS1MnCmNvbCBtYXhfYnl0ZXMgZm9ybWF0IDk5LDk5OSw5OTksOTk5IGhlYWQg J01BWCBCWVRFUycKY29sIG1heF9leHRlbnRzIGZvcm1hdCA5OTksOTk5IGhlYWQgJ01BWHxFWFRF TlRTJwpjb2wgbWluX2V4dGVudHMgZm9ybWF0IDk5OSBoZWFkICdNSU58RVhUJwpjb2wgbmV4dF9l eHRlbnQgZm9ybWF0IDksOTk5LDk5OSw5OTkgaGVhZCAnTkVYVHxFWFRFTlQnCmNvbCBvYmplY3Rf bmFtZSBmb3JtYXQgYTMwIGhlYWQgJ09CSkVDVCBOQU1FJwpjb2wgb3duZXIgZm9ybWF0IGExMCBo ZWFkICdPV05FUicKY29sIHBjdF9mcmVlIGZvcm1hdCA5OTkgaGVhZCAnUENUfEZSRUUnCmNvbCBw Y3RfaW5jcmVhc2UgZm9ybWF0IDk5OSBoZWFkICdQQ1R8SU5DJwpjb2wgcGN0X3VzZWQgZm9ybWF0 IDk5OSBoZWFkICdQQ1R8VVNFRCcKY29sIHN5bm9ueW1fbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ1NZ Tk9OWU0gTkFNRScKY29sIHRhYmxlX25hbWUgZm9ybWF0IGEzMCBoZWFkICdUQUJMRSBOQU1FJwpj b2wgdGFibGVfb3duZXIgZm9ybWF0IGExMCBoZWFkICdUQUJMRXxPV05FUicKY29sIHRhYmxlc3Bh Y2VfbmFtZSBmb3JtYXQgYTE1IGhlYWQgJ1RBQkxFU1BBQ0V8TkFNRScKY29sIHRpbWVzdGFtcCBm b3JtYXQgYTE5IGhlYWQgJ1RJTUUgU1RBTVAnCmNvbCB1c2VybmFtZSBmb3JtYXQgYTEwIGhlYWQg J1VTRVJOQU1FJwpjb2wgbGFzdF9kZGxfdGltZSBoZWFkICdMQVNUIERETHxUSU1FJwpjb2wgY3Jl YXRlZCBoZWFkICdDUkVBVEVEJwpjb2wgcHJvY2VkdXJlX25hbWUgZm9ybWF0IGEzMCBoZWFkICdQ Uk9DRURVUkUgTkFNRScKY29sIGZ1bmN0aW9uX25hbWUgZm9ybWF0IGEzMCBoZWFkICdGVU5DVElP TiBOQU1FJwpjb2wgcGFja2FnZV9uYW1lIGZvcm1hdCBhMzAgaGVhZCAnUEFDS0FHRSBOQU1FJwpj b2wgcGFja2FnZV9ib2R5X25hbWUgZm9ybWF0IGEzMCBoZWFkICdQQUNLQUdFIEJPRFkgTkFNRScK Y29sIHNlZ21lbnRfbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ1NFR01FTlQgTkFNRScK

--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
  charset="iso-8859-1";
  name="clears.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="clears.sql"

CnNldCBwYXVzZSBvZmYKc2V0IGVjaG8gb2ZmCnNldCB0cmltc3Bvb2wgb24Kc2V0IGZlZWQgb24g dGVybSBvbiBlY2hvIG9mZiB2ZXJpZnkgb2ZmCnNldCBsaW5lIDgwCnNldCBwYWdlcyAyNCBoZWFk IG9uCgpjbGVhciBjb2wKY2xlYXIgYnJlYWsKY2xlYXIgY29tcHV0ZXMKCmJ0aXRsZSAnJwp0dGl0 bGUgJycKCmJ0aXRsZSBvZmYKdHRpdGxlIG9mZgoKLS1AQHN0ZGRhdGUKCg==

--------------Boundary-00=_TI6B0KP3KE5T3HEN611V--
--

Please see the official ORACLE-L FAQ: http://www.orafaq.com
--

Author: Jared Still
  INET: jkstill_at_cybcon.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists

--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Mon May 14 2001 - 00:20:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US